package com.itcast.common.utils;

import cn.hutool.core.util.DesensitizedUtil;

/**
 * 脱敏工具类
 *
 * @author itcast
 * @create 2024/6/26 17:54
 **/
public class DesensitizedUtils extends DesensitizedUtil {
    /**
     * 对中文姓名进行脱敏处理
     *
     * @param name 待脱敏的中文姓名
     * @return 脱敏后的姓名
     */
    public static String maskChineseName(String name) {
        if (name == null || name.length() <= 1) {
            return name; // 名字太短，不处理直接返回
        }

        int length = name.length();
        if (length == 2) {
            // 只有两个字符，替换第二个字符
            return name.charAt(0) + "*";
        } else {
            //大于两个字符，除首尾字符外均替换为*
            return name.charAt(0) +
                    "*".repeat(length - 2) +
                    name.charAt(length - 1);
        }
    }

    /**
     * 对证件号码进行脱敏处理
     *
     * @param idCardNumber 待脱敏的证件号码
     * @return 脱敏后的证件号码
     */
    public static String maskIdCardNumber(String idCardNumber) {
        if (idCardNumber == null || idCardNumber.length() <= 7) {
            return idCardNumber; // 证件号码太短，不处理直接返回
        }

        // 保留开头三位，尾部4位，计算需要遮掩的字符数
        int totalLength = idCardNumber.length();
        int maskedLength = totalLength - 8;

        return idCardNumber.substring(0, 3) + // 保留前三位
                "*".repeat(maskedLength) + // 中间字符替换为星号
                idCardNumber.substring(totalLength - 4, totalLength); // 保留后四位
    }
}
